package com.isczy.acl.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isczy.acl.entity.Permission;

import java.util.List;

/**
 * <p>
 * 权限 服务类
 * </p>
 *
 */
public interface PermissionService extends IService<Permission> {

    /***
     * ***************************************
     * 功能描述:获取全部菜单
     * @param
     * @return {@link List< Permission>}
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:21】
     * @author modify:
     */
    List<Permission> queryAllMenu();

    /***
     * ***************************************
     * 功能描述:根据角色获取菜单
     * @param roleId
     * @return {@link List< Permission>}
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:21】
     * @author modify:
     */
    List<Permission> selectAllMenu(String roleId);

    /***
     * ***************************************
     * 功能描述:给角色分配权限
     * @param roleId
     * @param permissionId
     * @return
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:21】
     * @author modify:
     */
    void saveRolePermissionRealtionShip(String roleId, String[] permissionId);

    /***
     * ***************************************
     * 功能描述:递归删除菜单
     * @param id
     * @return
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:21】
     * @author modify:
     */
    void removeChildById(String id);

    /***
     * ***************************************
     * 功能描述:根据用户id获取用户菜单
     * @param id
     * @return {@link List< String>}
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:21】
     * @author modify:
     */
    List<String> selectPermissionValueByUserId(String id);

    List<JSONObject> selectPermissionByUserId(String id);

    /***
     * ***************************************
     * 功能描述:获取全部菜单
     * @param
     * @return {@link List< Permission>}
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:22】
     * @author modify:
     */
    List<Permission> queryAllMenuGuli();

    /***
     * ***************************************
     * 功能描述:递归删除菜单
     * @param id
     * @return
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:22】
     * @author modify:
     */
    void removeChildByIdGuli(String id);

    /***
     * ***************************************
     * 功能描述:给角色分配权限
     * @param roleId
     * @param permissionId
     * @return
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:22】
     * @author modify:
     */
    void saveRolePermissionRealtionShipGuli(String roleId, String[] permissionId);
}
